gtk4.git
6 years agobroadway: Track popups
Matthias Clasen [Mon, 22 Apr 2019 20:27:08 +0000 (20:27 +0000)]
broadway: Track popups

This is more or less a 1:1 copy of the X11 code.

6 years agox11: Implement popup surfaces
Matthias Clasen [Mon, 22 Apr 2019 15:22:33 +0000 (15:22 +0000)]
x11: Implement popup surfaces

Make them use o-r windows, and move
with their parent.

We do a sort-of ok job on stacking order
here - whenever the parent window gets a
ConfigureNotify, we just restack all popups
directly on top of their parent. This is good
enough to keep popups on top of their parent
while we drag it around, and it gets the popup
to disappear when raising another window on
top of the parent.

6 years agowayland: Use popup parents
Matthias Clasen [Mon, 22 Apr 2019 15:21:45 +0000 (15:21 +0000)]
wayland: Use popup parents

Make the Wayland move-to-rect implementation
use popup parents.

6 years agosurface: Stop setting transient-for for popups
Matthias Clasen [Mon, 22 Apr 2019 15:20:47 +0000 (15:20 +0000)]
surface: Stop setting transient-for for popups

This was just a hack to reuse the existing
infrastructure. Now that we store parents separately,
stop doing it.

6 years agosurface: Make move-to-rect work for popups
Matthias Clasen [Mon, 22 Apr 2019 15:17:53 +0000 (15:17 +0000)]
surface: Make move-to-rect work for popups

Now that we store popup parents separately,
the client-side move-to-rect implementation
must use them.

6 years agosurface: Store popup parent
Matthias Clasen [Mon, 22 Apr 2019 14:21:17 +0000 (14:21 +0000)]
surface: Store popup parent

Store popup parents separately from transient-for
parents, since these are separate concepts with
different behaviors. And we need the parent in
the frontend, so we can use it in the fallback
move-to-rect implementation.

6 years agogdk: Introduce a popup surface type
Matthias Clasen [Mon, 22 Apr 2019 13:16:26 +0000 (13:16 +0000)]
gdk: Introduce a popup surface type

This surface type is meant to have semantics
similar to xdg-popup, with a mandatory parent,
and relative placement using gdk_surface_move_to_rect.

6 years agox11: Remove useless checks
Matthias Clasen [Mon, 22 Apr 2019 13:16:55 +0000 (13:16 +0000)]
x11: Remove useless checks

All surfaces are toplevels now, no need
to check for this all over the place.

6 years agoGet rid of GdkSurfaceImpl
Matthias Clasen [Mon, 22 Apr 2019 01:14:46 +0000 (01:14 +0000)]
Get rid of GdkSurfaceImpl

We don't need the complicated wrapper system anymore,
since client-side windows are gone. This commit moves
all the vfuncs to GtkSurfaceClass, and changes the
backends to just derive their surface implementation
from GdkSurface.

6 years agogdk: Add a private header
Matthias Clasen [Sun, 21 Apr 2019 18:42:31 +0000 (14:42 -0400)]
gdk: Add a private header

This is in preparation for getting rid of GdkSurfaceImpl.

6 years agoRename surface constructors
Matthias Clasen [Sun, 21 Apr 2019 16:51:10 +0000 (16:51 +0000)]
Rename surface constructors

We want to use a gdk_surface_new_popup for popups,
and align the constructor names with the surface
types, so rename

gdk_surface_new_popup -> gdk_surface_new_temp
gdk_surface_new_popup_full -> gdk_surface_new_popup

The temp surface type will disappear eventually.

6 years agosurface: Cosmetics
Matthias Clasen [Sat, 20 Apr 2019 15:24:42 +0000 (15:24 +0000)]
surface: Cosmetics

6 years agogdk: Drop pass-through surfaces
Matthias Clasen [Sun, 21 Apr 2019 16:33:22 +0000 (16:33 +0000)]
gdk: Drop pass-through surfaces

With client-side windows gone, this property
is no longer used at all, and has been replaced
by a similar concept on the widget level.
Drop it.

6 years agogdk: Drop GdkWindowAttr
Matthias Clasen [Sun, 21 Apr 2019 16:24:07 +0000 (12:24 -0400)]
gdk: Drop GdkWindowAttr

All the information in it is already contained
in the surface object we pass along, and none
of the backend implementations were using the
attributes at all.

6 years agogdk: Drop input-only surfaces
Matthias Clasen [Sun, 21 Apr 2019 16:06:11 +0000 (12:06 -0400)]
gdk: Drop input-only surfaces

We are not creating such surfaces anymore, and
they were only ever meaningfully implemented
on X11. Drop the concept, and the api for determining
if a surface is input-only.

6 years agogdk: Remove an unused field
Matthias Clasen [Sun, 21 Apr 2019 15:39:35 +0000 (15:39 +0000)]
gdk: Remove an unused field

Spring cleaning. We are not using this field
at all, since we have the input_only boolean.

6 years agoDrop gdk_surface_new_temp
Matthias Clasen [Sat, 20 Apr 2019 04:30:33 +0000 (04:30 +0000)]
Drop gdk_surface_new_temp

This is no longer used, and the only difference
to gdk_surface_new_popup is input-only, which is
an X11-only concept.

6 years agomenu: Stop using gdk_surface_new_temp
Matthias Clasen [Sat, 20 Apr 2019 04:32:00 +0000 (04:32 +0000)]
menu: Stop using gdk_surface_new_temp

We can just as well use gdk_surface_new_popup.

6 years agox11: Stop using gdk_surface_new_temp
Matthias Clasen [Sat, 20 Apr 2019 04:31:27 +0000 (04:31 +0000)]
x11: Stop using gdk_surface_new_temp

We can just as well use gdk_surface_new_popup.

6 years agobroadway: Stop using gdk_surface_new_temp
Matthias Clasen [Sat, 20 Apr 2019 01:29:25 +0000 (01:29 +0000)]
broadway: Stop using gdk_surface_new_temp

This is in preparation for adding a proper
popup surface type.

6 years agowayland: Remove a useless switch
Matthias Clasen [Mon, 29 Apr 2019 16:49:38 +0000 (16:49 +0000)]
wayland: Remove a useless switch

We are setting the title unconditionally, now

6 years agodocs: Remove references to gdk_device_grab
Matthias Clasen [Fri, 19 Apr 2019 23:15:26 +0000 (19:15 -0400)]
docs: Remove references to gdk_device_grab

It is no longer public api, refer to gdk_seat_grab instead.

6 years agogdk: Remove remnants of client-side windows
Matthias Clasen [Fri, 19 Apr 2019 23:08:24 +0000 (23:08 +0000)]
gdk: Remove remnants of client-side windows

Now that all surfaces are native, we don't need
to separately keep track of grab surfaces and
their native ancestor anymore.

6 years agoDrop gtk_widget_register_surface
Matthias Clasen [Fri, 19 Apr 2019 20:18:57 +0000 (16:18 -0400)]
Drop gtk_widget_register_surface

This is no longer used.

6 years agopopover: Stop using gtk_widget_register_surface
Matthias Clasen [Fri, 19 Apr 2019 20:14:44 +0000 (20:14 +0000)]
popover: Stop using gtk_widget_register_surface

The GtkRoot implementations are expected to handle
the necessary surface setup themselves, going forward.

6 years agowindow: Stop using gtk_widget_register_surface
Matthias Clasen [Fri, 19 Apr 2019 20:14:09 +0000 (20:14 +0000)]
window: Stop using gtk_widget_register_surface

The GtkRoot implementations are expected to handle
the necessary surface setup themselves, going forward.

6 years agomenu: Stop using gtk_widget_register_surface
Matthias Clasen [Fri, 19 Apr 2019 20:13:49 +0000 (20:13 +0000)]
menu: Stop using gtk_widget_register_surface

It does not seem to be necessary at all.

6 years agosurface: Make gdk_surface_get_device_position void
Matthias Clasen [Fri, 19 Apr 2019 19:39:23 +0000 (15:39 -0400)]
surface: Make gdk_surface_get_device_position void

None of the callers were using the return value,
and without child surfaces, it is not very useful.

6 years agox11: Drop a gratitious use of gdk_event_get_root_coords
Matthias Clasen [Mon, 25 Mar 2019 04:26:42 +0000 (00:26 -0400)]
x11: Drop a gratitious use of gdk_event_get_root_coords

We are in the backend, so we can do the translation ourselves.

6 years agoRemove gdk_surface_get_geometry as public api
Matthias Clasen [Mon, 25 Mar 2019 04:00:14 +0000 (00:00 -0400)]
Remove gdk_surface_get_geometry as public api

We still need to keep the vfunc around, since the
fallback implementation of gdk_display_get_monitor_at_surface
uses it. So, a GDK backend must either have root coordinates
or always return a monitor from monitor_at_surface.

6 years agoDrop gdk_surface_get_root_origin
Matthias Clasen [Mon, 25 Mar 2019 03:15:01 +0000 (23:15 -0400)]
Drop gdk_surface_get_root_origin

It was not used.

6 years agoRemove gdk_surface_get_root_coords as public api
Matthias Clasen [Mon, 25 Mar 2019 03:09:48 +0000 (23:09 -0400)]
Remove gdk_surface_get_root_coords as public api

We still need to keep the vfunc around, since the
fallback implementation for move_to_rect uses it.
So, a GDK backend must either have root coordinates
or implement move_to_rect.

6 years agoRemove gdk_surface_coords_to/from_parent
Matthias Clasen [Mon, 25 Mar 2019 01:04:34 +0000 (21:04 -0400)]
Remove gdk_surface_coords_to/from_parent

This api was unused, and surfaces have no parents anymore.

6 years agosurface: Small simplification
Matthias Clasen [Sun, 24 Mar 2019 20:30:32 +0000 (16:30 -0400)]
surface: Small simplification

No more special-casing of state setting.

6 years agosurface: Simplify destroy implementation
Matthias Clasen [Sun, 24 Mar 2019 20:24:30 +0000 (16:24 -0400)]
surface: Simplify destroy implementation

Without child surfaces, there is no need to recurse.

6 years agosurface: Remove abs_x/abs_y
Matthias Clasen [Sun, 24 Mar 2019 19:42:32 +0000 (15:42 -0400)]
surface: Remove abs_x/abs_y

We no longer have child windows, so the offset is
always 0.

6 years agosurface: Small cleanup
Matthias Clasen [Sun, 24 Mar 2019 19:26:55 +0000 (15:26 -0400)]
surface: Small cleanup

Every surface has an impl now, no need to check.

6 years agosurface: Simplify some code
Matthias Clasen [Sat, 23 Mar 2019 13:35:14 +0000 (09:35 -0400)]
surface: Simplify some code

Fold gdk_surface_process_updates_recurse into its
only caller. There is no recursion here anymore.

6 years agoRemove surface->children
Matthias Clasen [Sat, 23 Mar 2019 13:29:09 +0000 (09:29 -0400)]
Remove surface->children

This field is not used at all anymore.

6 years agogdk: Stop using surface->children
Matthias Clasen [Sat, 23 Mar 2019 13:28:50 +0000 (09:28 -0400)]
gdk: Stop using surface->children

It is always NULL.

6 years agowayland: Stop using surface->children
Matthias Clasen [Sat, 23 Mar 2019 13:28:11 +0000 (09:28 -0400)]
wayland: Stop using surface->children

It is always NULL.

6 years agoRemove surface->parent
Matthias Clasen [Sat, 23 Mar 2019 13:13:55 +0000 (09:13 -0400)]
Remove surface->parent

This field is no longer used.

6 years agogdk: Stop using surface->parent
Matthias Clasen [Sat, 23 Mar 2019 13:13:37 +0000 (09:13 -0400)]
gdk: Stop using surface->parent

It is always NULL.

6 years agobroadway: Stop using surface->parent
Matthias Clasen [Sun, 21 Apr 2019 17:08:24 +0000 (13:08 -0400)]
broadway: Stop using surface->parent

6 years agox11: Stop using surface->parent
Matthias Clasen [Sat, 23 Mar 2019 13:12:10 +0000 (09:12 -0400)]
x11: Stop using surface->parent

It is always NULL.

6 years agowayland: Stop using surface->parent
Matthias Clasen [Sat, 23 Mar 2019 13:11:46 +0000 (09:11 -0400)]
wayland: Stop using surface->parent

It is always NULL.

6 years agosurface: Remove code dealing with child surfaces
Matthias Clasen [Sat, 23 Mar 2019 12:43:07 +0000 (08:43 -0400)]
surface: Remove code dealing with child surfaces

We no longer have child surfaces, so this code
is never run.

6 years agosurface: minor cleanup
Matthias Clasen [Sat, 23 Mar 2019 12:36:25 +0000 (08:36 -0400)]
surface: minor cleanup

Make gdk_surface_new fully private, and reduce the use
of GdkSurfaceAttr.

6 years agoDrop child surfaces
Matthias Clasen [Fri, 22 Mar 2019 18:24:39 +0000 (14:24 -0400)]
Drop child surfaces

Drop gdk_surface_child_new and the child surface type,
since we no longer use them. Deprecate surface apis
that only make sense with child surfaces.

6 years agowidget: Stop using child surface apis
Matthias Clasen [Sat, 23 Mar 2019 06:01:52 +0000 (02:01 -0400)]
widget: Stop using child surface apis

All our surfaces are toplevels now, and thus all native.

6 years agoa11y: Stop supporting ATK_XY_SCREEN
Matthias Clasen [Sat, 23 Mar 2019 05:59:47 +0000 (01:59 -0400)]
a11y: Stop supporting ATK_XY_SCREEN

We were already not supporting ATK_XY_PARENT, and we can't
support global positions, so just always do ATK_XY_WINDOW.

6 years agoxim: Stop using child surface apis
Matthias Clasen [Sat, 23 Mar 2019 06:00:59 +0000 (02:00 -0400)]
xim: Stop using child surface apis

We no longer have child surfaces.
Drop code that only makes sense in
their presence.

6 years agowayland: Stop using child surface apis
Matthias Clasen [Sat, 23 Mar 2019 04:14:46 +0000 (00:14 -0400)]
wayland: Stop using child surface apis

We no longer have child surfaces.
Drop code that only makes sense in their
presence.

6 years agox11: Stop using child surface api
Matthias Clasen [Sat, 23 Mar 2019 04:14:00 +0000 (00:14 -0400)]
x11: Stop using child surface api

We no longer have child surfaces.
Drop code that only makes sense in
that case.

6 years agoentry completion: Use a popover
Matthias Clasen [Sat, 20 Apr 2019 04:32:29 +0000 (04:32 +0000)]
entry completion: Use a popover

This lets us remove a use of GTK_WINDOW_POPUP,
which should eventually be going away.

We need to disable treeview search, since it
creates a toplevel that will disrupt our grabbing
popup, causing it to be dismissed.

We don't need to grab ourselves, since the popover
code does it for us. We don't need to reposition our
window, since the popover takes care of that too.

6 years agomain: Use gtk_widget_get_native
Matthias Clasen [Thu, 2 May 2019 21:33:53 +0000 (17:33 -0400)]
main: Use gtk_widget_get_native

6 years agomain: Remove special-case hiding popopvers
Matthias Clasen [Mon, 22 Apr 2019 21:39:18 +0000 (21:39 +0000)]
main: Remove special-case hiding popopvers

This is now happening in GDK, so we don't have
to do this here anymore.

6 years agowidget: Remove some unneeded popover special-casing
Matthias Clasen [Fri, 26 Apr 2019 03:18:15 +0000 (03:18 +0000)]
widget: Remove some unneeded popover special-casing

6 years agoAdwaita: Give popover menus a background
Matthias Clasen [Sun, 24 Mar 2019 15:41:55 +0000 (11:41 -0400)]
Adwaita: Give popover menus a background

This makes the hover highlight on menu items visible.

6 years agomenubutton: Allocate the popover
Matthias Clasen [Fri, 26 Apr 2019 23:17:37 +0000 (23:17 +0000)]
menubutton: Allocate the popover

This is temporary, until we've figured out
the proper way of hooking this up

6 years agoAdapt to new popover lifecycle
Matthias Clasen [Fri, 22 Mar 2019 02:12:22 +0000 (22:12 -0400)]
Adapt to new popover lifecycle

We need to unparent popovers in dispose.

6 years agoReimplement GtkPopover
Matthias Clasen [Mon, 29 Apr 2019 03:25:37 +0000 (03:25 +0000)]
Reimplement GtkPopover

6 years agosurface: Start sketching a new surface type
Matthias Clasen [Wed, 20 Mar 2019 00:05:17 +0000 (20:05 -0400)]
surface: Start sketching a new surface type

Start by adding a constructor. We have to call it
gdk_surface_new_popup_full for now, since gdk_surface_new_popup
is taken. This may be reshuffled later.

6 years agomenushell: Keep outside clicks working
Matthias Clasen [Sun, 26 May 2019 17:16:40 +0000 (17:16 +0000)]
menushell: Keep outside clicks working

We need to unset event propagation limits here
to keep receiving outside clicks that cause us
to close the menu.

6 years agoIntroduce event controller propagation limits
Matthias Clasen [Mon, 29 Apr 2019 02:19:44 +0000 (02:19 +0000)]
Introduce event controller propagation limits

Limit event handlers by default to only handle
events targeting the same surface as their widget.

6 years agowidget: Don't snapshot foreign children
Matthias Clasen [Mon, 18 Mar 2019 11:51:47 +0000 (07:51 -0400)]
widget: Don't snapshot foreign children

When snapshotting, we walk down the widget tree.
We need to skip children that have a different
surface, since those will do their own snapshot.

6 years agoroot: Make gtk_root_get_display public
Matthias Clasen [Sun, 19 May 2019 20:35:59 +0000 (20:35 +0000)]
root: Make gtk_root_get_display public

This is following the precedent of making
GtkNative getters public.

6 years agoGtkRoot: Drop overlap with GtkNative
Matthias Clasen [Sun, 26 May 2019 17:39:11 +0000 (17:39 +0000)]
GtkRoot: Drop overlap with GtkNative

Drop the parts from the GtkRoot interface
that have been taken over by GtkNative.

6 years agowidget: Use GtkNative
Matthias Clasen [Mon, 29 Apr 2019 17:47:40 +0000 (13:47 -0400)]
widget: Use GtkNative

6 years agoReview and replace uses of get_toplevel
Matthias Clasen [Sun, 17 Mar 2019 23:41:26 +0000 (19:41 -0400)]
Review and replace uses of get_toplevel

Now that roots can have parent widgets, we need to
carefully examine all calls of gtk_widget_get_toplevel,
and replace them with gtk_widget_get_root if we want
the nearest root, and not the ultimate end of the parent
chain.

6 years agoUse GtkNative APIs instead of GtkRoot
Matthias Clasen [Sun, 26 May 2019 18:02:55 +0000 (18:02 +0000)]
Use GtkNative APIs instead of GtkRoot

6 years agoAdd gtk_widget_get_native
Matthias Clasen [Thu, 2 May 2019 21:32:54 +0000 (17:32 -0400)]
Add gtk_widget_get_native

This is a common enough operation to deserve api.

6 years agoroot: Require GtkNative
Matthias Clasen [Mon, 29 Apr 2019 05:42:39 +0000 (05:42 +0000)]
root: Require GtkNative

6 years agowindow: Implement GtkNative
Matthias Clasen [Sun, 26 May 2019 17:43:46 +0000 (17:43 +0000)]
window: Implement GtkNative

Adapt GtkWindow to implement both GtkRoot and GtkNative.

6 years agonative: Add to docs
Matthias Clasen [Tue, 28 May 2019 20:22:18 +0000 (16:22 -0400)]
native: Add to docs

6 years agoIntroduce GtkNative
Matthias Clasen [Sun, 26 May 2019 17:38:27 +0000 (17:38 +0000)]
Introduce GtkNative

Split off the parts of GtkRoot that are specific
to widgets having a surface into the GtkNative
interface.

6 years agomain: guard window-specific code paths
Matthias Clasen [Sun, 3 Mar 2019 22:42:36 +0000 (17:42 -0500)]
main: guard window-specific code paths

This was overlooked when I first tried to
make things for GtkRoot.

6 years agowidget: guard popover-specific code paths
Matthias Clasen [Sun, 24 Feb 2019 23:41:26 +0000 (18:41 -0500)]
widget: guard popover-specific code paths

This is essentially a special case just for GtkPopover,
which is the last widget with a child surface.

6 years agoExport gtk_widget_render privately
Matthias Clasen [Sun, 19 May 2019 03:41:08 +0000 (03:41 +0000)]
Export gtk_widget_render privately

We need it in gtkwindow.c and gtkpopover.c.

6 years agosurface: Add marshallers for new events
Benjamin Otte [Tue, 28 May 2019 17:18:35 +0000 (19:18 +0200)]
surface: Add marshallers for new events

This way, sysprof can profile through the signal emission, and for
signals this low in the stack, this is very useful.

6 years agofile chooser widget: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 03:02:33 +0000 (03:02 +0000)]
file chooser widget: Drop the priv pointer

6 years agofile chooser dialog: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 02:48:26 +0000 (02:48 +0000)]
file chooser dialog: Drop the priv pointer

6 years agofile chooser dialog: Make final
Matthias Clasen [Tue, 28 May 2019 02:42:14 +0000 (02:42 +0000)]
file chooser dialog: Make final

6 years agofile chooser widget: Make final
Matthias Clasen [Tue, 28 May 2019 02:41:15 +0000 (02:41 +0000)]
file chooser widget: Make final

6 years agofile chooser button: Make final
Matthias Clasen [Tue, 28 May 2019 02:40:08 +0000 (02:40 +0000)]
file chooser button: Make final

6 years agofont chooser dialog: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 02:37:41 +0000 (22:37 -0400)]
font chooser dialog: Drop the priv pointer

6 years agofont chooser widget: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 02:27:47 +0000 (22:27 -0400)]
font chooser widget: Drop the priv pointer

6 years agofont chooser dialog: Make final
Matthias Clasen [Tue, 28 May 2019 00:57:47 +0000 (00:57 +0000)]
font chooser dialog: Make final

6 years agofont chooser widget: Make final
Matthias Clasen [Tue, 28 May 2019 00:56:41 +0000 (00:56 +0000)]
font chooser widget: Make final

6 years agofont button: Make final
Matthias Clasen [Tue, 28 May 2019 00:55:28 +0000 (00:55 +0000)]
font button: Make final

6 years agoapp chooser dialog: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:51:46 +0000 (20:51 -0400)]
app chooser dialog: Drop the priv pointer

6 years agoapp chooser widget: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:44:01 +0000 (20:44 -0400)]
app chooser widget: Drop the priv pointer

6 years agoapp chooser dialog: Make final
Matthias Clasen [Tue, 28 May 2019 00:30:59 +0000 (20:30 -0400)]
app chooser dialog: Make final

6 years agoapp chooser widget: Make final
Matthias Clasen [Tue, 28 May 2019 00:30:48 +0000 (20:30 -0400)]
app chooser widget: Make final

6 years agoapp chooser button: Make final
Matthias Clasen [Tue, 28 May 2019 00:30:35 +0000 (20:30 -0400)]
app chooser button: Make final

6 years agocolor chooser dialog: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:23:17 +0000 (00:23 +0000)]
color chooser dialog: Drop the priv pointer

6 years agocolor chooser widget: Drop the priv pointer
Matthias Clasen [Tue, 28 May 2019 00:20:03 +0000 (00:20 +0000)]
color chooser widget: Drop the priv pointer

6 years agocolor chooser dialog: Make final
Matthias Clasen [Tue, 28 May 2019 00:04:15 +0000 (00:04 +0000)]
color chooser dialog: Make final

6 years agocolor chooser widget: Make final
Matthias Clasen [Tue, 28 May 2019 00:04:01 +0000 (00:04 +0000)]
color chooser widget: Make final

6 years agocolor button: Make final
Matthias Clasen [Tue, 28 May 2019 00:03:46 +0000 (00:03 +0000)]
color button: Make final